import { Pipe, PipeTransform } from '@angular/core';


@Pipe({ name: 'dateFormatPipe' })
export class DateFormatPipe implements PipeTransform {

  transform(value:string, arg:any) {
    if (value && arg) {
      value = this.Format(value,arg);
    }
    return value;
  }

  // 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
  Format(value:any,fmt:any) { //author: meizz

    const REGEX = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/;
      if (value) {
          /**
           * @instructions 如果不是时间戳格式，且含有字符 '-' 则将 '-' 替换成 '/' && 删除小数点及后面的数字
           * @reason 将 '-' 替换成 '/' && 删除小数点及后面的数字 的原因是safari浏览器仅支持 '/' 隔开的时间格式
           */
          if (value.toString().indexOf('-') > 0) {
              value = value.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/(-)/g, '/'); // 将 '-' 替换成 '/'
              value = value.slice(0, value.indexOf(".")); // 删除小数点及后面的数字
          }
          let date = new Date(value);
          date.setHours(date.getHours() + 8 +8);
          var [whole, yy, MM, dd, hh, mm, ss] = date.toISOString().match(REGEX);
          var year = new Date().getFullYear();
          var month = new Date().getMonth() + 1;
          var dates = new Date().getDate();
          if (fmt) {
              return fmt
                  .replace('yyyy', yy)
                  .replace('yy', yy.slice(2))
                  .replace('MM', MM)
                  .replace('dd', dd)
                  .replace('hh', hh)
                  .replace('mm', mm)
                  .replace('ss', ss)
          } else {
              return [yy, MM, dd].join('-') + ' ' + [hh, mm, ss].join(':');
          }
      } else {
          return '--';
      }
    //兼容ios
    // value = value.replace('+0000','');
    // let date = new Date(value);
    //
    // let str = fmt;
    // var Week = ['日','一','二','三','四','五','六'];
    //
    // str=str.replace(/yyyy|YYYY/,date.getFullYear());
    // //str=str.replace(/yy|YY/,(date.getYear() % 100)>9?(date.getYear() % 100).toString():'0' + (date.getYear() % 100));
    // str=str.replace(/MM/,date.getMonth()>8?(date.getMonth()+1).toString():'0' + (date.getMonth()+1));
    // str=str.replace(/M/g,(date.getMonth()+1));
    // str=str.replace(/w|W/g,Week[date.getDay()]);
    // str=str.replace(/dd|DD/,date.getDate()>9?date.getDate().toString():'0' + date.getDate());
    // str=str.replace(/d|D/g,date.getDate());
    // str=str.replace(/hh|HH/,date.getHours()>9?date.getHours().toString():'0' + date.getHours());
    // str=str.replace(/h|H/g,date.getHours());
    // str=str.replace(/mm/,date.getMinutes()>9?date.getMinutes().toString():'0' + date.getMinutes());
    // str=str.replace(/m/g,date.getMinutes());
    // str=str.replace(/ss|SS/,date.getSeconds()>9?date.getSeconds().toString():'0' + date.getSeconds());
    // return str;



    // let date = new Date(value);
    // let str = fmt;
    // str=str.replace(/s|S/g,date.getSeconds());
    // let o = {
    //   "M+": date.getMonth() + 1, //月份
    //   "d+": date.getDate(), //日
    //   "h+": date.getHours(), //小时
    //   "m+": date.getMinutes(), //分
    //   "s+": date.getSeconds(), //秒
    //   "q+": Math.floor((date.getMonth() + 3) / 3), //季度
    //   "S": date.getMilliseconds() //毫秒
    // };
    // if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    // for (var k in o)
    //   if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    // return fmt;
  }



}

